/*
 *  Cero Project - Copyright   2006 The Cero Developement Team 
 *  (Michael Laguerre, Camille Roux, Matthieu Segret, Mathieu Sivade) 
 * 
 *  This program is free software; you can redistribute it and/or modify it 
 *  under the terms of the GNU General Public License as published by the Free 
 *  Software Foundation; either version 2 of the License, or (at your option) 
 *  any later version.
 * 
 *  This program is distributed in the hope that it will be useful, but 
 *  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 *  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 
 *  for more details.
 */

package org.ceroproject.ui.graphical.tools;

import java.awt.*;
import java.util.List;

import org.ceroproject.games.*;
import org.ceroproject.ui.graphical.tools.layout.*;


/**
 * Interface which creates a Graphical Zone associated with a Zone
 * 
 * @author Matt
 */
public interface GraphicsZone extends Rectangle, ZoneListener {

	/* ------------- Method ------------- */
	
	/**
	 * Returns the Zone associated with the GraphicalZone
	 * 
	 * @return the Zone associated with the GraphicalZone
	 */
	public Zone getZone();

	/**
	 * Get the ZoneLayout
	 * 
	 * @return the zoneLayout
	 */
	public ZoneLayout getZoneLayout();
	
	/**
	 * Set the ZoneLayout
	 * 
	 * @param zoneLayout
	 *            the ZoneLayout to set
	 */
	public void setZoneLayout(ZoneLayout zoneLayout);

	
	/**
	 * Get the graphical cards list
	 * 
	 * @return the graphical cards list
	 */
	public List<GraphicsCard> getGCardList();

	
	/**
	 * Return the status of a Card
	 * 
	 * @return true if the graphical zone is selected, false otherwise
	 */
	public boolean getSelected();

	
	/**
	 * Select the graphical zone
	 * 
	 * @param state
	 *            true if the Card is selected, false otherwise
	 */
	public void setSelected(boolean state);
	
	
	/**
	 * Paint the GraphicalZone
	 * 
	 * @param g
	 *            Graphics needed to paint the GraphicalZone
	 *            
	 *@param deck 
	 *				the deck where to paint the Graphical zone
	 */
	public void paint(Graphics g,Deck deck);

}
